package com.epsi.mightymaps.act;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import org.xml.sax.SAXException;

import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources.NotFoundException;
import android.os.Bundle;
import android.util.Log;
import android.util.Xml;
import android.util.Xml.Encoding;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import com.epsi.mightymaps.R;
import com.epsi.mightymaps.gui.ListeParcoursAdapter;
import com.epsi.mightymaps.hdl.ParcoursContentHandler;
import com.epsi.mightymaps.mdl.Parcours;

public class ListeParcours extends Activity implements OnItemClickListener {

	private final List<Parcours> listeDesParcours = new ArrayList<Parcours>();
	private static final String TAG = ListeParcours.class.getSimpleName();

	@Override
	public void onCreate(final Bundle pSavedInstanceState) {
		super.onCreate(pSavedInstanceState);
		setContentView(R.layout.listeparcours);
		this.recupListeParcours();

		ListView lv = (ListView) findViewById(R.id.parc_listview);
		lv.setAdapter(new ListeParcoursAdapter(this, listeDesParcours));
		lv.setTextFilterEnabled(true);
		lv.setOnItemClickListener(this);
	}

	// avec un xml online
	@SuppressWarnings("unused")
	private void parseXMLURL(final String pXml, List<Parcours> parcours) {
		try {
			Xml.parse(pXml, new ParcoursContentHandler(parcours));
		} catch (SAXException e) {
			Log.e(TAG, "Parse error", e);
		}

	}

	private void parseXML(final InputStream pXml, List<Parcours> parcours) {

		try {
			Xml.parse(pXml, Encoding.UTF_8,
					new ParcoursContentHandler(parcours));

		} catch (SAXException e) {
			Log.e(TAG, "Parse error", e);
		} catch (IOException e) {
			Log.e(TAG, "File error", e);
		}

	}

	private void recupListeParcours() {
		List<String> listItems = new ArrayList<String>();

		Field[] fields = R.raw.class.getFields();
		for (Field f : fields)
			try {
				listItems.add(f.getName());
			} catch (IllegalArgumentException e) {
			}

		for (Field f : fields) {
			try {
				this.parseXML(getResources().openRawResource(f.getInt(null)),
						this.listeDesParcours);
			} catch (NotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalArgumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		Log.d(TAG, "xml contenu :" + this.listeDesParcours.size());
		// on set le premier parcours par defaut
		Intent intent = this.getParent().getIntent();
		intent.putExtra(OngletsManager.PARCOURS, listeDesParcours.get(0));
	}

	public void onItemClick(AdapterView<?> adapt, View v, int position, long i) {
		Intent intent = this.getParent().getIntent();
		intent.putExtra(OngletsManager.PARCOURS, listeDesParcours.get(position));

	}
}
